#pragma once

#include<string>
#include<iostream>
#include<jsoncpp/json/json.h>

//报文
//1.有效载荷长度(int)\r\n
//jsonstr\r\n

class Request
{
public:
    Request()
    {}
    //序列化
    std::string Serialize() const
    {
        //1.手写   ------字符串拼接转化
        //2.使用现有的序列化框架，工具
        Json::Value root;
        root["x"]=_x;
        root["y"]=_y;
        root["oper"]=_oper;

        Json::StreamWriterBuilder writer;
        std::string s=writer.write(root);

        return s;
     
    }

    //反序列化
    void Deserialize(const std::string &in)
    {
       Json:Value root;
       _x=root["x"].asInt();
       _y=root["y"].asInt();
       _oper=root["oper"].asInt();

    }

    //协议还要保证未来的报文是完整的

    ~Request()
    {}
private:
    // x oper y --约定1，必须这个顺序
    int _x;
    int _y;
    char _oper;
};

class Response
{


private:
    int _result;//  10/0------> error计算结果和计算信息不能混一起
    int _code;//结果码，0表示结果可信，其他表示各种出错状态；
};
//客户发送给Request，经过计算结果给到Responce，Responce再返回，客户端再收到处理，打印出结果
//but,now我们发送的为结构化数据，需要序列化和反序列化
